package br.edu.faculdadeprojecao.DAO;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.edu.faculdadeprojecao.enuns.Dia;
import br.edu.faculdadeprojecao.enuns.Horario;
import br.edu.faculdadeprojecao.enuns.Turno;
import br.edu.faculdadeprojecao.modelo.Disponibilidade;

public class DisponibilidadeDAO {
	private EntityManager em;
	
	public DisponibilidadeDAO(EntityManager em){
		this.em = em;
	}
	
	public void salva(Disponibilidade disponibilidade){
		em.persist(disponibilidade);		
	}
	
	public void altera(Disponibilidade disponibilidade){
		em.merge(disponibilidade);
	}
	
	public void delete(Disponibilidade disponibilidade){
		em.remove(disponibilidade);
	}
	
	public Disponibilidade busca(Integer id){
		return em.find(Disponibilidade.class,id);
		
	}
	
	public List<Disponibilidade> lista(){
		@SuppressWarnings("unchecked")
		List<Disponibilidade> list = em.createQuery("select d from Disponibilidade d ").getResultList();
		return list;
	}
	
	public Disponibilidade buscaPorDiaTurnoHorario(Dia dia, Turno turno, Horario horario) {
		String jpql = "select d from Disponibilidade d"+
				" where d.dia=:dia and d.turno=:turno and d.horario=:horario";
		Query query = this.em.createQuery(jpql);
		query.setParameter("dia", dia);
		query.setParameter("turno", turno);
		query.setParameter("horario", horario);
		Disponibilidade d = (Disponibilidade) query.getSingleResult();
		return d;
	}
	

}
